package cn.piesat.service.intf;

import cn.piesat.dto.PiesatResourceInfoDTO;
import cn.piesat.vo.resource.*;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * 资源信息服务层接口定义
 *
 * @author xhl
 */
public interface ResourceService {

    /**
     * 添加资源信息
     * @param dto 添加资源信息参数对象
     * @return
     */
    Map<String, String> add(AddResourceVO dto);

    /**
     * 修改资源信息
     * @param dto 修改资源信息参数对象
     * @return
     */
    Map<String, String> update(UpdateResourceVO dto);

    /**
     * 根据分页条件和搜索条件查询资源信息列表
     * @param pageable 分页信息对象
     * @param searchDTO 搜索参数对象
     * @return
     */
    Map<String,Object> list(Pageable pageable, ResourceSearchVO searchDTO);

    /**
     * 根据资源ID查询资源详细信息
     * @param id 资源ID
     * @return
     */
    ResourceDetailVO getOne(String id);

    /**
     * 删除资源相关信息
     * @param id
     */
    void deleteOne(String id);

    Map<String,String> findByMenuId();

    /**
     * 开启、禁用资源
     * @param lockResourceVO
     */
    void lock(LockResourceVO lockResourceVO);

    List<PiesatResourceInfoDTO> findByType(String type);

    /**
     * 根据条件查询所有资源信息
     * @param searchDTO
     * @return
     */
    List<ResourceVO> listAll(ResourceSearchVO searchDTO);

    /**
     * 记录、不记录资源
     * @param lockResourceVO
     */
    void logStatus(LockResourceVO lockResourceVO);

    /**
     * 初始化日志记录
     * @return
     */
    Map<String, String> initLog();

}
